一句话介绍call
A.call(B)
A的方法借给B, B临时借用A的方法来完成B的需求
为什么要使用call/apply/bind?
使用ES5的继承,你需要新声明一个函数来承载这些方法,那么使用call就可以通过改变上下文
来临时借用方法.更加的方便和灵活.
实现思路
1. 给B函数添加一个方法,值为A函数
2. 执行B函数中的A函数
3. 删除B函数中的A函数
1 | Function.prototype.myCall = function (context) { |
添加形参和返回值
1 | Function.prototype.myCall2 = function (context) { |
注意
1.this的参数可以传null,传null视为指向window
总结
1. Demo